package Controlador;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;

import Modelo.Terminal;
import Modelo.TipoPago;
import Vista.VTipoPago;
@SuppressWarnings("all")
public class CTipoPago  implements ActionListener{

	//Clases con las que se va a trabajar

	
	private VTipoPago vtp;
	private TipoPago tp;
	private Terminal ter;
	private int varBusqueda = 0;

	//Constructor de la clase
	
	public CTipoPago(Terminal ter, CTerminal cter){
		super();
		this.vtp = new VTipoPago(this);
		this.ter = ter;
		this.vtp.setVisible(true);
		llenarTabla();
		
	}
	
	//Metodos Para accionar los botones
	@Override
	public void actionPerformed(ActionEvent e) {
	      if(e.getActionCommand().toLowerCase().equals("modificar"))
	      {
	    	  		Modificar();
	      }
	      else if(e.getActionCommand().toLowerCase().equals("guardar"))
	      {
	    	  		Guardar();
	      }else if(e.getActionCommand().toLowerCase().equals("limpiar"))
	      {
	    	  Limpiar();
	      }else if(e.getActionCommand().toLowerCase().equals("eliminar"))
	      {
	    	  Eliminar();
	      }
	      else if(e.getActionCommand().toLowerCase().equals("buscar")){
	    	  Buscar();
	      }
	      
	}
	
	//metodo para guardar un tipo de pago nuevo
	
	public void Guardar(){
		
	//Se crea un objeto tipo de pago
		if(validarDatos()){
			TipoPago tp = new TipoPago();
			tp.setCodigo(this.vtp.getTxtCodigo().getText().toString());
			tp.setDescripcion(this.vtp.getTxtDescripcion().getText().toString());
			ter.agregarTipoPago(tp);
			JOptionPane.showMessageDialog(null, "Registro Tipo Pago Exitoso", "Guardar Tipo Pago", 1);
			vtp.getTxtCodigo().setText("");
			vtp.getTxtDescripcion().setText("");
			varBusqueda = 0;
			vtp.limpiarTabla();
			llenarTabla();
		}
	}
	
	//metodo para eliminar un tipo de pago existente
	
	public void Eliminar(){
		

	}
	
	public void llenarTabla() {
		

		

		for (int k = 0; k < ter.contarTiposPago(); k++) {
				
				
					Vector<String> datos = new Vector<String>(2, 1);
					
					
					String codigo = ter.obtenerTipoPago(k).getCodigo();
					String descripcion = ter.obtenerTipoPago(k).getDescripcion();
	
					datos.add(codigo);
					datos.add(descripcion);
					vtp.agregarFilaTblTipoPago(datos);
				
				
		}
	}
	
	//metodo para modificar un tipo de pago existente
	
	public void Modificar(){
		
		if(varBusqueda == 1){
				int respuesta = vtp.mostrarMensajeConfirmacion("Esta Seguro que desea modificar el Tipo de Pago?");
				if(respuesta == 0){
					tp.setDescripcion(this.vtp.getTxtDescripcion().getText().toString());
					
					
				}else
				{
					vtp.mostrarMensaje("Operacion cancelada");
				}
		}else
		{
			vtp.mostrarMensaje("No se puede modificar un Tipo de Pago no buscado");
		}
	}
	
	//metodo para buscar un tipo de pago
	public void Buscar(){
		

		TipoPago tipopagobuscado;
		if((vtp.getTxtCodigo().getText().equals(""))){
			vtp.mostrarMensaje("Debe llenar el campo codigo para poder buscar");		
		}else if(ter.buscarTipoPago(vtp.getTxtCodigo().getText()) == null)
		{
			vtp.mostrarMensaje("El tipo de pago con codigo " +vtp.getTxtCodigo().getText()+ " no existe" );	
			
		}else{
			String codigo = vtp.getTxtCodigo().getText().toString();
			tipopagobuscado = ter.buscarTipoPago(codigo);
			
		
				vtp.getTxtCodigo().setEnabled(false);
				vtp.getTxtDescripcion().setEnabled(false);
				vtp.getTxtDescripcion().setText(tipopagobuscado.getDescripcion().toString());
				vtp.getBtnGuardar().setEnabled(false);
				vtp.getBtnBuscar().setEnabled(false);
		}	
		
	}
	

	
	public boolean validarDatos(){
		if(vtp.getTxtCodigo().getText().toString().equalsIgnoreCase("")){
			vtp.mostrarMensaje("Debe ingresar un codigo de Tipo de Pago");
			return false;
		}else if (vtp.getTxtDescripcion().getText().toString().equalsIgnoreCase("")){
			vtp.mostrarMensaje("Debe ingresar una descripcion de Tipo de Pago");
			return false;
		}else if(ter.buscarTipoPago(vtp.getTxtCodigo().getText().toString()) != null){
			vtp.mostrarMensaje("Ya el tipo de pago con codigo " + vtp.getTxtCodigo().getText().toString() + " existe");
			return false;
		}
		
		return true; //en caso de que esten llenos los campos
		
	}
	
	//metodo para limpiar los campos de texto
	
	public void Limpiar(){
		
		//pone los campos de texto en blanco
		vtp.getTxtCodigo().setText("");
		vtp.getTxtDescripcion().setText("");
		
		//habilita todos los botones
		vtp.getBtnBuscar().setEnabled(true);
		vtp.getBtnEliminar().setEnabled(true);
		vtp.getBtnModificar().setEnabled(true);
		vtp.getBtnGuardar().setEnabled(true);
		
		//habilita todos los campos de texto
		
		vtp.getTxtCodigo().setEnabled(true);
		vtp.getTxtDescripcion().setEnabled(true);
		varBusqueda = 0;
	}
	
	
}
